﻿#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
//shift +Tab退格
int main()
{
	int num = 0;
	int cnt = 0;

	//cnt=scanf("%d", &num);

	if (num % 2);//此为空语句
	/*嵌套if语句本质和else if等价*/
	printf("%d是奇数\n", num);
	/*
		如果有多个 if 和 else ，可以记住这样⼀条规则， else 总是跟最接近的 if 匹配。
		if (cnt == 0)
			if (num == 1)
				printf("haha\n");
		else printf("hehe\n");
		输出为空
	 */
	
	/*
		喜欢将变量写在等号的右边,避免出现==与=混淆的情况
		i < j && j < k 避免连写出现问题，实际上存在布尔运算
		左结合性：C语⾔逻辑运算符，它总是先对左侧的表达式求值，再对右边的表达式求值
		短路：&&操作符来说，左边操作数的结果是0的时候，右边操作数就不再执⾏。
			  ||操作符的左操作数的结果不为0时，就⽆需执⾏右操作数。
		虽然单目操作符（如 ++）的优先级高于逻辑运算符（如 &&），但运算的顺序不仅受到优先级的影响
			还受到运算符的求值策略影响。在逻辑与（&&）操作中，短路求值起着关键作用。
	*/
	printf("%d\n", (1 == 1));//布尔运算
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;//短路求值
	i = a++ || ++b || d++;//a先使用（参与||），然后自加1

	/*
		switch 后的 expression 必须是整型表达式
•		case 后的值，必须是整形常量表达式
		字符类型也是可以使用的，本质是整型
		break根据实际需求考虑使用
		default 语句是没有顺序要求的
	*/
	/*int day = 0;
	scanf("%d", &day);
	switch (day)
	{
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			printf("⼯作⽇\n");
			break;
		case 6:
		case 7:
			printf("休息⽇\n");
			break;
	}*/
	printf("输入一个整数，逆序打印出来\n");
	int temp = 0;
	scanf("%d", &temp);
	while (temp)
	{
		printf("%d ", temp % 10);
		temp /= 10;
	}
	printf("%c",10);

	int sum = 0;
	for (int i = 3; i <= 100; i += 3)
	{
		/*表达式可以省去一些条件，最好不要缺*/
		sum += i;
	}
	printf("%d\n", sum);

	/*
		break 的作⽤是⽤于永久的终⽌循环，只要 break 被执⾏，直接就会跳出循环，继续往后执⾏。
•		continue 的作⽤是跳过本次循环中 continue 后边的代码，在 for 循环和 while 循环中有所差异的（i++是否必执行）。
		用输密码来形象理解
	*/
	return 0;
}